package top.kaoshanji.p1ch02c;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.lang.invoke.MethodType;

/**
 * 代码清单 p1ch02c-05：一次性修改MethodType中的返回值和所有参数的类型的使用示例
 * author kaoshanji
 * ^_^
 * create time 2025/1/2 17:01
 */
public class MethodTypeExample05 {

    private static final Logger logger = LogManager.getLogger(MethodTypeExample05.class);

    public static void main(String[] args) {
        logger.info("...代码清单 p1ch02c-05：一次性修改MethodType中的返回值和所有参数的类型的使用示例...");

        MethodType mt = MethodType.methodType(Integer.class, int.class, double.class);
        System.out.println(mt);

        MethodType wrapped = mt.wrap();
        System.out.println(wrapped);

        MethodType unwrapped = mt.unwrap();
        System.out.println(unwrapped);

        MethodType generic = mt.generic();
        System.out.println(generic);

        MethodType erased = mt.erase();
        System.out.println(erased);

    }

}
